package stockscreener.negocio.indicador;

import stockscreener.controlador.ControladorDadosEconomicosFinanceiros;
import stockscreener.negocio.Acao;
import stockscreener.negocio.BalancoPatrimonial;
import stockscreener.negocio.DemonstracaoDoResultadoDoExercicio;

public class ReturnOnEquity extends Indicador {

	public ReturnOnEquity() {
		this.setNome("ROE");
	}

	public ReturnOnEquity(Acao acao) {
		this();
		System.out.println("ROE: " + acao.getSigla());
		this.setAcao(acao);
	}

	@Override
	public double calcular() {
		BalancoPatrimonial ultimoBalanco = ControladorDadosEconomicosFinanceiros.get().obterUltimoBalancoPatrimonial(
				this.getAcao().getEmpresa());

		DemonstracaoDoResultadoDoExercicio ultimaDRE = ControladorDadosEconomicosFinanceiros.get()
				.obterUltimaDemonstracaoDeResultadoDoExercicio(this.getAcao().getEmpresa());
		// TODO levar em conta a periodicidade do DRE (um, dois, tres ou quatro
		// trimestres)

		Double roe = 0d;

		if (ultimaDRE != null) {
			roe = ultimaDRE.getLucroLiquido().doubleValue() / ultimoBalanco.getPatrimonioLiquido().doubleValue();
		}

		this.setValor(roe);
		return roe;
	}
}
